package com.heima.common.qiniu;

import com.alibaba.fastjson.JSONObject;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.UUID;
@Slf4j
public class QiniuService {
    // 设置好账号的ACCESS_KEY和SECRET_KEY
    String ACCESS_KEY = "TBn-PgmFbzlL1VXluWSjGg_vZZM7P6UkJlC0Nfqe";
    String SECRET_KEY = "llMlJr7M2it-uy4IML6c3B8r2dqxO-VtteHToc8a";

    // 要上传的空间（创建空间的名称）
    String bucketname = "ptttz";

    // 密钥配置
    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);

    // 构造一个带指定Zone对象的配置类,不同的七云牛存储区域调用不同的zone
    Configuration cfg = new Configuration(Zone.zone2());
    // ...其他参数参考类注释
    UploadManager uploadManager = new UploadManager(cfg);

    // 使用的是测试域名
    private static final String QINIU_IMAGE_DOMAIN = "rxmij1478.hn-bkt.clouddn.com/";

    // 简单上传，使用默认策略，只需要设置上传的空间名就可以了
    public String getUpToken() {
        return auth.uploadToken(bucketname);
    }

    public String saveImage(byte[] image) throws IOException {
        try {
//            int dotPos = file.getOriginalFilename().lastIndexOf(".");
//            if (dotPos < 0) {
//                return null;
//            }
//            String fileExt = file.getOriginalFilename().substring(dotPos + 1).toLowerCase();
//            // 判断是否是合法的文件后缀
//            if (!FileUtil.isFileAllowed(fileExt)) {
//                return null;
//            }
//
            String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + "png";
            // 调用put方法上传
            Response res = uploadManager.put(image, fileName, getUpToken());
            // 打印返回的信息
            if (res.isOK() && res.isJson()) {
                // 返回这张存储照片的地址
                return QINIU_IMAGE_DOMAIN + JSONObject.parseObject(res.bodyString()).get("key");
            } else {
                log.error("七牛异常:" + res.bodyString());
                return null;
            }
        } catch (QiniuException e) {
            // 请求失败时打印的异常的信息
            log.error("七牛异常:" + e.getMessage());
            return null;
        }
    }

}